package com.doublefish.doublefishrobot.utils;


import android.content.Context;
import android.content.res.Configuration;
import android.content.res.Resources;

import java.util.Locale;

//国际化工具
//目前只有中文 和 英文
public class LocalizationUtils {

    // 0.自动  1.中文  2.English
    //由于只有新生成的界面会切换语言，已经生成的旧页面不会自动切换语言。旧的页面需要销毁重建，这个比较麻烦
    //为方便起见，采用重启APP的方式（与iOS保持一致）
    //这里记一个全局的变量，保证在重启之前，该值不变
    private int globalLanguageType = 0;


    //单例
    private static volatile LocalizationUtils instance;
    public static LocalizationUtils getInstance() {
        if (instance == null) {
            synchronized (LocalizationUtils.class) {
                if (instance == null) {
                    instance = new LocalizationUtils();
                }
            }
        }
        return instance;
    }

    private LocalizationUtils() {
        globalLanguageType = SharedPreferencesUtils.getInstant().getLanguageType();
    }

    //获取设置的语言选项 0.自动 1.中文 2.English
    public int getLanguageType() {
        return SharedPreferencesUtils.getInstant().getLanguageType();
    }

    //切换语言类型
    public void setLanguageType(int type) {
        //不改变 本地的 languageType的值
        //保存偏好设置，方便重启后读取
        SharedPreferencesUtils.getInstant().setLanguageType(type);
    }

    //所有涉及到context的都需要多用这个api
    //需要在 APPlication 和 Activity 中切换语言
    public Context showLanguage(Context context) {
        if (context == null) {
            return null;
        }
        if (globalLanguageType == 0) {
            return context;
        }
        Locale locale = null;
        if (globalLanguageType == 1) {
//            locale = new Locale("zh");
            locale = Locale.CHINESE;
        } else {
//            locale = new Locale("en");
            locale = Locale.ENGLISH;
        }
        Locale.setDefault(locale);

        Resources resources = context.getResources();
        Configuration config = resources.getConfiguration();
        config.setLocale(locale);

        Context newContext = context.createConfigurationContext(config);
        if (newContext != null) {
            return newContext;
        }
        CrashReportUtils.postTestException("newContext == null");
        return context;
    }

    //当前APP是否显示英文
    public boolean isEn() {
        if (globalLanguageType == 1) {
            return false;
        }
        if (globalLanguageType == 2) {
            return true;
        }
        String language = Locale.getDefault().getLanguage();
        if (language.equalsIgnoreCase("zh")) {
            return false;
        }
        return true;
    }

    //当前APP是否显示中文
    public boolean isZh() {
        if (globalLanguageType == 1) {
            return true;
        }
        if (globalLanguageType == 2) {
            return false;
        }
        String language = Locale.getDefault().getLanguage();
        if (language.equalsIgnoreCase("zh")) {
            return true;
        }
        return false;
    }
}
